﻿#define _CRT_SECURE_NO_WARNINGS 1
//符合下列属性的数组 arr 称为⼭脉数组：
//• arr.length >= 3 
//• 存在 i（0 < i < arr.length - 1） 使得：
//arr[0] < arr[1] < ... arr[i - 1] < arr[i]
//arr[i] > arr[i + 1] > ... > arr[arr.length - 1]
//给你由整数组成的⼭脉数组 arr ，返回任何满⾜ arr[0] < arr[1] < ... arr[i - 1] < arr[i] > arr[i + 1] > ... > arr[arr.length - 1] 的下标 i
//eg:输⼊： arr = [0, 1, 0] 输出： 1

#include <iostream>
using namespace std;

//二分算法，找到递减区间的端点即可
int peakIndexInMountainArray(int* a,int n)
{
	int left = 1, right = n - 2;
	int mid = 0;
	while (left < right)
	{
		mid = left + (right - left+1) / 2;
		if (a[mid] > a[mid - 1])
			left = mid;
		else
			right = mid - 1;
	}
	return left;
}

int main()
{
	int arr[] = { 24,69,100,99,79,78,67,36,26,19 };
	int n = sizeof(arr) / sizeof(arr[0]);

	int an=peakIndexInMountainArray(arr,n);
	cout << an << endl;

	return 0;
}